今日大綱
- 卷積神經網路 (CNN)
- 卷積層 (Covolution layer)
- 池化層 (Pooling layer)
- 攤平(Flatten layer)
- 全連接層(Fully connected layer)
- CNN特性
卷積神經網路 (CNN)
卷積神經網路經常使用在影像辨識上,像是物件偵測、人臉辨識等。CNN所需要使用到的layer有卷積層、池化層、攤平以及全連接層。下圖為CNN網路的架構圖。
圖片來源
卷積層 (Covolution layer)
卷積層的主要目的為特徵提取,將不重要的資訊刪除。
在了解卷積層之前需了解幾個專有名詞
- 卷積核(kernel),又稱過濾器(filter):常見的大小為3乘3,亦可以自行設定。卷積核為模型所訓練出來的,只需要設定其大小即可。卷積核裡的數值即為權重,它是固定不變的。
- 特徵圖 (feature map):圖片與卷積核相乘並且相加之後的所有結果。
- 步幅(stride):每次移動視窗時所走的大小,可以自行設定。
假設今天有張圖片大小為5乘5,卷積核的大小為3乘3,步幅設為1,如下圖。
第一次計算時,將這個範圍的數值與卷積核相對應位置的數值相乘,進一步將特徵圖所有的數值相加。
滑動至圖片最後時,將全部的數值列出,就會得到特徵圖。
經過計算後,所得到的特徵圖大小會比原本的圖像小,如想保留原尺寸的話,可以使用padding,在原始資料周圍補上0。
通常經過卷積層後會加上一層Relu的激活函數,在這個範例中因為沒有任何值小於0,因此特徵圖不會改變。
池化層 (Pooling layer)
池化層分為平均池化層與最大池化層兩種,前者為將滑動視窗裡的值取平均,後者為取最大值,將特徵降維,保留原始特徵的資訊。
在這個範例中,滑動視窗為2乘2,以下為平均池化層的結果。
以下為最大池化層的結果。
攤平(Flatten layer)
將資料輸入至全連接層時,需要將資料攤平,降維成一維的資料。
全連接層(Fully connected layer)
最後將一維的資料輸入全連接層進行預測,如果為多類別,激活函數使用softmax,機率最大的類別即為預測值。
CNN特性
- 部分連接:不同於Dense全連接層,卷積層的輸出神經元只連接滑動視窗的神經元。下一層的神經元只會接受到上一層神經元有感知的區域,這個區域稱為感知域 (Reception field)。由於這個特性,輸入特徵減少使得權重也降低,簡化了模型的複雜度。
- 權重共享 (Weight sharing):同一個卷積層計算時數值相同,因此需要估計的權重減少,也進一步簡化了模型。
謝謝您的瀏覽,我們明天見!
2023/4/9更新
為什麼不直接使用fully connected neural network處理影像呢?
- 如果使用整張圖片當作input訓練時,維度會很大,例如一張圖片的大小為100x100,彩色圖片又有三個channels,即為RGB,將tensor flatten後,輸入的dimension為30000。如果第一層有64個神經元,那光是第一層就有64x30000個權重,通常一個模型會有好幾個layer,因此才加入receptive field的概念。
- 影像分類時,只需要擷取幾個重要特徵即能判斷是什麼生物,例如輸入鳥的圖片,從鳥嘴、它的腳等部位就能夠知道是隻鳥,不需要考慮全部的資訊。